/*
 * MiRendererTree.java
 *
 * Created on 17 de febrero de 2006, 12:08 PM
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package ig.formato.util;

import java.awt.Color;
import java.awt.Component;
import java.awt.Graphics;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.TreeCellRenderer;

// Esta es la clase que va a permitir personalizar la presentaci�
// de cada una de las ramas del �bol, de forma que no solamente
// tengamos el texto correspondiente a la carta, o palo de la
// baraja, sino un icono mostrando su imagen
public class MiRendererTree extends JLabel implements TreeCellRenderer {
//    private ImageIcon imgBaraja;
    private ImageIcon[] img;
//    private String path = "./lib/images/";
    private boolean seleccionado;
    
    public MiRendererTree(String tree) {
        // Cargamos las imgenes de las cartas
//      imgBaraja = new ImageIcon( "_palos.gif" );
        img = new ImageIcon[4];
        tree=tree==null || tree.trim().equals("")?"tree.gif":tree;
        img[0] = new ImageIcon(/*path+*/tree+".gif" );
        img[1] = new ImageIcon(/*path+*/"item.gif" );
        img[2] = new ImageIcon(/*path+*/"pantalla.gif" );
        img[3] = new ImageIcon(/*path+*/"wizard.gif" );
        this.setToolTipText("opciones");
    }
    
    public Component getTreeCellRendererComponent( JTree arbol,  Object valor,boolean seleccionado,boolean expandido, boolean rama,int fila,boolean conFoco ) {
        // Hay que encontrar el nodo en que estamos y coger el
        // texto que contiene
        DefaultMutableTreeNode nodo = (DefaultMutableTreeNode)valor;
        String texto = nodo.getUserObject().toString();
        this.seleccionado = seleccionado;
        setFont(new java.awt.Font("Dialog", 1, 10));
        if(texto.equals("<IG-Formato>") || texto.equals("<Informes>"))
            setIcon(new javax.swing.ImageIcon(getClass().getResource("/ig/formato/util/images/"+img[0])));
        else if( texto.equals( "Configuracion") /*|| texto.equals("Entidad") */|| texto.equals("Mercado") || texto.equals( "Gobierno") || texto.equals("Modelos") || texto.equals("Salidas") || texto.equals("Usuario"))
            setIcon(new javax.swing.ImageIcon(getClass().getResource("/ig/formato/util/images/"+img[1])));
        else if(texto.equals( "Tasas" )|| texto.equals( "Especies" )|| texto.equals( "Acciones" ) || texto.equals( "Contratos Simples" )){
            setFont(new java.awt.Font("Dialog", 0, 10));
            setIcon(new javax.swing.ImageIcon(getClass().getResource("/ig/formato/util/images/"+img[3])));
        }else{
            setFont(new java.awt.Font("Dialog", 0, 10));
            setIcon(new javax.swing.ImageIcon(getClass().getResource("/ig/formato/util/images/"+img[2])));
        }
        // A continuaci del icono, ponemos el texto
        setText( texto );
        
        return( this);
    }
    
    // Sobreescribimos el m�odo paint() para fijar el color de
    // fondo. Normalmente, un JLabel puede pintar su propio fondo,
    // pero, seguramente debido aparentemente a un bug, o a una
    // limitaci� en el TreeCellRenderer, es necesario recurrir
    // al m�odo paint() para hacer esto
    @Override
    public void paint( Graphics g ) {
        Color color;
        Icon currentI = getIcon();
        
        // Fijamos el colos de fondo
        color = seleccionado ? new Color(216,216,252) : Color.white;
        g.setColor( color );
        // Rellenamos el rect�gulo que ocupa el texto sobre la
        // celda del �bol
        g.fillRect( 0,0,getWidth()-1,getHeight()-1 );
        
        super.paint( g );
    }
}